package shuati.gui1;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;


public class Cs extends JFrame  implements ActionListener  {

    public static final String DRIVER = "com.mysql.jdbc.Driver";// 这个固定不变
    public static final String URL = "jdbc:mysql://localhost:3306/test_gui?useSSL=false";// "cc"是指连接的数据库名，"localhost"是指主机地址，"3306"默认端口
    public static final String USER = "root";// 当前电脑mysql账号
    public static final String PASSWORD = "8866";// 当前电脑mysql密码
    private JTextField uname;
    private JTextField iphone;
    private JLabel timeText;

    //获取当前时间

    public Cs() {

        try {
            Class.forName(DRIVER); // 加载驱动
        } catch (ClassNotFoundException e) {
            throw new RuntimeException(e);
        }

                /*
        窗口 》 容器 》 布局 》 组件
        窗口
         */

        // 创建一个水平盒子容器

        // 父盒子Box: createVerticalBox
        // 时间
        // 子容器：用户名： createHorizontalBox()（文本标题  输入框）
        // 手机号： createHorizontalBox()（文本标题  输入框）
        // 按钮： createHorizontalBox()（按钮  按钮）

        this.setDefaultCloseOperation(3);// 设置关闭模式
        this.setSize(380, 280);// 设置窗口大小
        this.setLocationRelativeTo(null);// 设置窗口居中
        FlowLayout flowLayout = new FlowLayout();
        flowLayout.setAlignment(FlowLayout.CENTER);
        setLayout(new FlowLayout());

        JLabel margin = new JLabel(" ");
        JLabel margin2 = new JLabel(" ");
        JLabel margin22 = new JLabel(" ");
        JLabel margin3 = new JLabel(" ");
        JLabel margin33 = new JLabel(" ");
        JLabel margin4 = new JLabel(" ");
        JLabel margin44 = new JLabel(" ");
        JLabel margin5 = new JLabel("                 ");
        // 1. 创建布局
        // 1.1 创建父布局
        Box mainBox = Box.createVerticalBox();
        // 1.2 创建子布局
        Box nameBox = Box.createHorizontalBox();
        Box phoneBox = Box.createHorizontalBox();
        Box btnBox = Box.createHorizontalBox();

        // 1.3 把子布局放到父布局
        // 2.1 创建显示标签
        // 2. 创建组件
        // 2.2 用户名
        // 2.2.1 创建用户名标题
        JLabel nameTitle = new JLabel("  用户名： ");
        // 2.2.2 把用户名标题添加到布局上
        nameBox.add(nameTitle);

        // 2.2.1 创建用户名输入框
        uname = new JTextField(20);// 创建文本输入框
        // 2.3.2 把用户名标题添加到布局上
        nameBox.add(uname);
        //2.3 手机号
        //2.3.1 创建手机号标题
        JLabel text = new JLabel("  手机号： ");
        phoneBox.add(text);
        text.setBounds(10, 50, 300, 80);
        //2.3.2 创建手机号输入框
        iphone = new JTextField(20);// 创建文本输入框
        //2.3.2 创建手机号输入框
        phoneBox.add(iphone);
        // 2.4 按钮
        //2.4.1 创建按钮
        JButton jb = new JButton("     写入    ");
        JButton jb1 = new JButton(" 确认继续写入 ");
        jb1.setSize(100, 50);
        //2.4.1 把按钮添加到布局
        btnBox.add(jb);
        btnBox.add(margin5);
        btnBox.add(jb1);
        timeText = new JLabel(" 时间：");
        // 2.1.1 把时间添加到布局上
        mainBox.add(margin);
        mainBox.add(timeText);
        mainBox.add(margin2); mainBox.add(margin22);
        mainBox.add(nameBox);
        mainBox.add(margin3); mainBox.add(margin33);
        mainBox.add(phoneBox);
        mainBox.add(margin4); mainBox.add(margin44);
        mainBox.add(btnBox);
        // 1.4 把父布局放到窗体
        add(mainBox);
        this.setVisible(true);// 显示窗口

        jb.addActionListener(this);// 添加按钮监听
        Bnt2 bnt2 = new Bnt2();  // shijian
        jb1.addActionListener(bnt2);

        UpdateTime updateTime = new UpdateTime();

        updateTime.start();


        // 事件
        // 回调

    }

    public void actionPerformed(ActionEvent e) {
        String str = uname.getText().trim();
        String str1 = iphone.getText().trim();
        if (str.length()<3) {
            JOptionPane.showMessageDialog(null, "姓名输入错误！！");// 弹窗提示
        } else if (str1.length()<11) {
            JOptionPane.showMessageDialog(null, "手机号输入错误！！");// 弹窗提示
        } else {
            for (int i = 0; i < str1.length(); i++) {
                // 手机号判断数字
                if (str1.charAt(i) < '0' || str1.charAt(i) > '9') {
                    JOptionPane.showMessageDialog(null, "手机号为数字,请重新输入");
                    return;
                }
            }

            User user = new User();
            user.setName(str);
            user.setPhone(str1);
            int result = xieRu(user);
            if (result>0){
                JOptionPane.showMessageDialog(null, "操作成功");
            } else {
                JOptionPane.showMessageDialog(null, "操作失败");
            }
        }
    }



    public class Bnt2 implements ActionListener {

        @Override
        public void actionPerformed(ActionEvent e) {
            String str = uname.getText().trim();
            String str1 = iphone.getText().trim();
            if (str.length()<3) {
                JOptionPane.showMessageDialog(null, "姓名输入错误！！");// 弹窗提示
            } else if (str1.length()<11) {
                JOptionPane.showMessageDialog(null, "手机号输入错误！！");// 弹窗提示
            } else {
                for (int i = 0; i < str1.length(); i++) {
                    // 手机号判断数字
                    if (str1.charAt(i) < '0' || str1.charAt(i) > '9') {
                        JOptionPane.showMessageDialog(null, "手机号为数字,请重新输入");
                        return;
                    }
                }

                User user = new User();
                user.setName(str);
                user.setPhone(str1);
                int result = xieRu(user);
                if (result>0){
                    JOptionPane.showMessageDialog(null, "操作成功");
                    uname.setText("");
                    iphone.setText("");
                } else {
                    JOptionPane.showMessageDialog(null, "操作失败");
                }
            }
        }

    }

    public int xieRu(User user){
        Connection con = null;
        PreparedStatement pstmt = null;
        try {
            con = DriverManager.getConnection(URL, USER, PASSWORD);
            System.out.println("连接成功");
            String sql = "INSERT INTO test (name, phone) VALUES (?, ?)";// sql语句，kk为数据库表名
            pstmt = con.prepareStatement(sql);// 对sql语句的预编译
            pstmt.setString(1, user.getName());// 设置sql语句中的第一个"?"为name属性
            pstmt.setString(2, user.getPhone());
            System.out.println("写人成功");
            int result = pstmt.executeUpdate();// 产生执行结果集
            if (result>0){
                return 1;
            } else {
                return 0;
            }

        } catch (Exception ee) {
            ee.printStackTrace();// 打印异常信息的位置
            return 0;
        }
    }


    public class UpdateTime extends Thread{

        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        @Override
        public void run() {
            System.out.println("Time线程开始运行...");
            while (true) {
                System.out.println("Time更新...");
                Date date = new Date();
                String data1 = simpleDateFormat.format(date);
                timeText.setText("Time: " + data1);
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    throw new RuntimeException(e);
                }
            }
        }

    }

}